Modern software systems typically have a complex collection of independent software programs/components that work collectively to provide the services and functionality of a system as a whole. These individual software components often have error and failure modes that may not impact other components in the system. Errors and failures will usually impact the entire software system, however, by preventing proper operation or causing incorrect behavior in the system. If the software system needs to be highly available and fault-tolerant, then some mechanism must be introduced to monitor the individual software components and ensure that each is operating correctly. Existing monitoring methods do not efficiently verify the correct operation of software operating in distributed computer systems. Enhanced techniques are needed to monitor the components and processes operating (and failing to operate) within distributed, non-centralized software and computing systems.